package com.campus.secondhand.service;

import com.campus.secondhand.common.Result;
import com.campus.secondhand.entity.ShoppingCart;
import com.campus.secondhand.model.dto.ShoppingCartDTO;
import com.campus.secondhand.model.vo.PageVO;
import com.campus.secondhand.model.vo.ShoppingCartVO;

/**
 * 购物车服务接口
 */
public interface ShoppingCartService {

    /**
     * 获取购物车列表
     * 
     * @param userId   用户ID
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 购物车列表分页结果
     */
    Result<PageVO<ShoppingCartVO>> getCartList(Long userId, Integer pageNum, Integer pageSize);

    /**
     * 添加商品到购物车
     * 
     * @param shoppingCartDTO 购物车数据
     * @return 添加结果
     */
    Result<ShoppingCartVO> addToCart(ShoppingCartDTO shoppingCartDTO);

    /**
     * 从购物车移除商品
     * 
     * @param userId 用户ID
     * @param id     购物车项ID
     * @return 移除结果
     */
    Result<Void> removeFromCart(Long userId, Long id);

    /**
     * 清空购物车
     * 
     * @param userId 用户ID
     * @return 清空结果
     */
    Result<Void> clearCart(Long userId);
}